<template>
  <!-- 跳转到微信授权地址,静默获取微信登陆code -->
</template>

<script>
  import queryStringify from '@/utils/queryStringify'
  import store from '@/store'
  import { isEmpty, urlEncode } from '@/utils/util'
  import Api from '@/api/wxofficial'

  export default {

    data() {
      return {
        // 页面来源是否为微信回调
        isCallback: false
      }
    },

    created() {
      // 处理微信回调
	  console.log('22_wx-official', '微信公众号插件开始加载')
      this.onCallback()
	  console.log('24_wx-official', '微信回调处理完成')
      // 跳转到微信授权
      this.redirectUrl()
    },

    methods: {

      // 处理微信回调
      onCallback() {
        // 接收微信传来的参数
        const wxParam = queryStringify.parse(window.location.search)
		console.log('35_wx-official_微信回调过来的参数', wxParam)
		const url = window.location.href.replace(window.location.search, '')
		console.log('37_wx-official_过滤完参数的地址', url)
        if (!isEmpty(wxParam)) {
		  console.log('39_wx-official', '已获得微信回调参数')
		  let a = '?'
		  if (url.indexOf('?') > 0) a = '&'
          window.location.href = url + a + urlEncode(wxParam)
		  console.log('41_wx-official', url + a + urlEncode(wxParam))
          return
        }
        // 获取code参数
        const query = this.$route.query
        if (isEmpty(query) || !query.code) {
			console.log('46_wx-official', 46)
          return
        }	
		this.isCallback = true
		//console.log('51_wx-official', 51)
		//if (url.indexOf('personal/add') !== -1) {
		//console.log('53_code', query.code)
		// this.$parent.isWxOfficialAuth = false
		this.$parent.code = query.code
		console.log('58_wx-official_获取得code', query.code)
		this.onEmitSuccess(query.code)
			//setTimeout(() => this.onEmitSuccess(query.code), 100)
			// this.onEmitSuccess()
		// } else {
		// 	// 请求后端获取微信用户信息
		// 	Api.oauthUserInfo(query.code)
		// 	  .then(({ data }) => {
		// 	    console.log('用户同意了授权')
		// 	    console.log('userInfo：', data)
		// 	    // 授权成功事件
		// 	    this.onAuthSuccess(data)
		// 	  })
		// }
      },

      // 授权成功事件
      // 这里分为两个逻辑:
      // 1.将openid和userInfo提交到后端，如果存在该用户 则实现自动登录，无需再填写手机号
      // 2.如果不存在该用户, 则显示注册页面, 需填写手机号
      // 3.如果后端报错了, 则显示错误信息
      // async onAuthSuccess({ userInfo, encryptedData, iv }) {
      //   const app = this
      //   // 提交到后端
      //   store.dispatch('LoginWxOfficial', {
      //       partyData: { oauth: 'H5-WEIXIN', userInfo, encryptedData, iv },
      //       refereeId: store.getters.refereeId
      //     })
      //     .then(result => {
      //       // 一键登录成功
      //       app.$toast(result.message)
      //       // 相应全局事件订阅: 刷新上级页面数据
      //       uni.$emit('syncRefresh', true)
      //       // 跳转回原页面
      //       setTimeout(() => app.onNavigateBack(), 2000)
      //     })
      //     .catch(err => {
      //       const resultData = err.result.data
      //       // 显示错误信息
      //       if (isEmpty(resultData)) {
      //         app.$toast(err.result.message)
      //       }
      //       // 判断还需绑定手机号
      //       if (resultData.isBindMobile) {
      //         app.onEmitSuccess({ userInfo, encryptedData, iv })
      //       }
      //     })
      // },

      // 跳转到微信授权
      redirectUrl() {
        if (this.isCallback) {
		  console.log('110_wx-official', '不用再次获取微信登陆请求地址')
          return
        }
        const callbackUrl = window.location.href
		console.log('110_wx-official', callbackUrl)
        Api.oauthUrl(callbackUrl)
          .then(result => {
            const url = result.data.redirectUrl
			// console.log('113_wx_url', url)
			// url：https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx07fe012747e45ff7&redirect_uri=http%3A%2F%2F10.0.0.2%3A5173%2F%23%2Fpages%2Fuser%2Fpersonal%2Fadd&response_type=code&scope=snsapi_userinfo&state=918150a18203d994e5c2e5fe0dc2343e&connect_redirect=1#wechat_redirect
			//静默请求地址：'https://open.weixin.qq.com/connect/oauth2/authorize?appid='+appid+'&redirect_uri='+redirectUri+'&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect'
			//微信回调测试地址： const url = 'http://10.0.0.2:5173/?code=0610ODGa1MGGuH0irrFa1Tvb7X00ODGY&state=64a9b34d6f0497fb521287988c8e7db8#/pages/user/personal/add'
			//下面要返回的地址改造成为静默授权的地址
			// const str = '&scope=snsapi_base&state=STATE#wechat_redirect'			
			// const requestUrl = url.split('&scope=')[0] + str
			const requestUrl = url.replace('snsapi_userinfo', 'snsapi_base')
			console.log('126_wx-official_获得微信登陆请求地址', requestUrl)
            window.location.href = requestUrl
          })
      },

      // 将oauth提交给父级
      async onEmitSuccess(code) {
		console.log('133_wx-official_插件执行完毕', '把插件获取到的code提交给父级indexd页面')
		console.log('134_wx-official_code', code)
        this.$emit('success', {
          oauth: 'H5-WEIXIN', // 第三方登录类型: H5-WEIXIN
		  code: code
        })
      },

      /**
       * 登录成功-跳转回原页面
       */
      // onNavigateBack(delta = 1) {
      //   const pages = getCurrentPages()
      //   if (pages.length > 1) {
      //     uni.navigateBack({
      //       delta: Number(delta || 1)
      //     })
      //   } else {
      //     this.$navTo('pages/index/index')
      //   }
      // }

    }
  }
</script>
